﻿using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Windows;
using Red.Controls.Diagrams.ViewModels;

namespace Red.Controls.Diagrams
{
    public interface IObjectManager
    { 
        void CreateObject( string className, Point position );
        void DeleteSelectedNodes();
        void MoveNodes( IEnumerable<Tuple<double, double, string, NodeViewModel>> nodesData );
        void CreateConnection( ConnectorViewModel connectorDraggedOut, ConnectorViewModel connectorDraggedOver, ConnectionViewModel newConnection );
        void DeleteConnection( ConnectionViewModel connection );
        void DeleteConnections( IEnumerable <ConnectionViewModel> connection );
        Task CreateDiagramAsync( string parentID );
        void CreateConnectedObject( string className, Point position, ConnectionViewModel connection );
        bool ObjectHasOutputOfType( string nodeType, string outputType );
        void CreateDecoratorObject( string className, Point position, ConnectionViewModel connection );
        bool CanCopySelectedNodes();
        void CopySelectedNodes();
        void CutSelectedNodes();
        bool CanPasteNodes();
        void PasteNodes( Point position );
    }
}
